iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
DevOps

60天從零開始學DevSecOps系列 第 8

Day 8 - 別再把金庫鑰匙推上雲

  • 分享至 

  • xImage
  •  

今天的主線任務:避免憑證外洩
(翻譯:別再把 API Key 當早餐一起推上 GitHub 了🥲)


情境小劇場

想像一下,你 push 的不是程式碼,而是「公司金庫的鑰匙」。
結果 GitHub 幫你大聲廣播:

「各位駭客注意,這 repo 有免費鑰匙可以領哦~先搶先贏!」

所以今天我們要學會在門口擺保全:

  1. 左牆:GitHub 原生(Secret scanning + Push protection);
  2. 中牆:CI/CD 裝哨兵(Gitleaks)
  3. 右牆:開發者本機先自我檢查(pre-commit)

三道牆疊起來,外人再怎麼想偷看都只能撞牆。


做一份「測試金鑰」

注意:千萬別用真的金鑰!
我們只要假裝丟一個秘密進去,來驗證防線是不是有動作。

建立一個 .env 檔:

GITHUB_TOKEN=ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Push 上去 → 立刻觸發 GitHub 的保護機制。
(就像推門時,門口的警衛突然抓住你:「欸你口袋是不是有鑰匙?」)


1) GitHub 原生防線(第一層,必開)

  1. 進到 Repo → Settings

  2. 打開這兩個選項:

    • Secret scanning → 幫你掃歷史紀錄,看看過去有沒有外洩。
    • Push protection → 阻止「新的秘密」被推上來,還能要求開發者說明理由。

這招就像 GitHub 幫你養了一隻「保全 AI 狗」,會在 push 的時候大聲汪汪叫。

https://ithelp.ithome.com.tw/upload/images/20250821/20171891EJH70tEgie.png


2) CI/CD 裝上 Gitleaks

雖然 GitHub 原生很強,但保全狗有時也會累。
所以我們在 CI 裝上 Gitleaks,讓 PR/Commit 自動被掃描。

最簡單的 GitHub Action(每天掃一次 + PR 留言):

name: DevSecOps – Secret Scanning (Gitleaks)

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  schedule:
    - cron: "0 1 * * *"  # 每天 09:00 台灣時間
  workflow_dispatch:

jobs:
  gitleaks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Gitleaks Scan
        uses: gitleaks/gitleaks-action@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

結果會直接貼在 PR 底下,像是老師在你的作業旁邊畫紅筆圈圈。


3) 開發者本機:pre-commit

最後一層防線,就是「不要讓鑰匙連家門都走出來」。
pre-commit hook,push 前就先把可疑內容攔下來。

這樣一來:

  • 你 → 不會不小心推秘密。
  • CI → 不會浪費時間掃一堆雷。
  • GitHub → 也不會半夜傳通知嚇你。

今日小結

  • 左牆(原生):GitHub Secret scanning + Push protection。
  • 中牆(CI):Gitleaks 自動掃 PR/Commit。
  • 右牆(本機):pre-commit,秘密擋在第一時間。

三層防護疊好疊滿,
就算你一時手滑想把金庫鑰匙推上 GitHub,
也會被三道保全依序攔下來:

「不好意思,這東西你推不了。」
「你確定要推嗎?理由說來聽聽?」
「算了啦兄弟,乾脆一開始就別推。」



上一篇
Day 7 – SCA 實作:讓相依套件也有健康檢查
系列文
60天從零開始學DevSecOps8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言